@ibm/ibmi-mcp-server 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -0
- package/dist/config/index.d.ts +100 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +463 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/resolver.d.ts +32 -0
- package/dist/config/resolver.d.ts.map +1 -0
- package/dist/config/resolver.js +60 -0
- package/dist/config/resolver.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/crypto.d.ts +11 -0
- package/dist/ibmi-mcp-server/auth/crypto.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/crypto.js +100 -0
- package/dist/ibmi-mcp-server/auth/crypto.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.d.ts +28 -0
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js +243 -0
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/index.d.ts +9 -0
- package/dist/ibmi-mcp-server/auth/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/index.js +8 -0
- package/dist/ibmi-mcp-server/auth/index.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/tokenManager.d.ts +86 -0
- package/dist/ibmi-mcp-server/auth/tokenManager.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/tokenManager.js +214 -0
- package/dist/ibmi-mcp-server/auth/tokenManager.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/types.d.ts +31 -0
- package/dist/ibmi-mcp-server/auth/types.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/types.js +5 -0
- package/dist/ibmi-mcp-server/auth/types.js.map +1 -0
- package/dist/ibmi-mcp-server/index.d.ts +8 -0
- package/dist/ibmi-mcp-server/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/index.js +126 -0
- package/dist/ibmi-mcp-server/index.js.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/index.d.ts +7 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/index.js +7 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/index.js.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.d.ts +106 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.js +145 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.js.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.d.ts +16 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.js +110 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.js.map +1 -0
- package/dist/ibmi-mcp-server/schemas/common.d.ts +174 -0
- package/dist/ibmi-mcp-server/schemas/common.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/schemas/common.js +119 -0
- package/dist/ibmi-mcp-server/schemas/common.js.map +1 -0
- package/dist/ibmi-mcp-server/schemas/config.d.ts +858 -0
- package/dist/ibmi-mcp-server/schemas/config.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/schemas/config.js +248 -0
- package/dist/ibmi-mcp-server/schemas/config.js.map +1 -0
- package/dist/ibmi-mcp-server/schemas/index.d.ts +12 -0
- package/dist/ibmi-mcp-server/schemas/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/schemas/index.js +20 -0
- package/dist/ibmi-mcp-server/schemas/index.js.map +1 -0
- package/dist/ibmi-mcp-server/schemas/tools.d.ts +287 -0
- package/dist/ibmi-mcp-server/schemas/tools.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/schemas/tools.js +167 -0
- package/dist/ibmi-mcp-server/schemas/tools.js.map +1 -0
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts +82 -0
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js +262 -0
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js.map +1 -0
- package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts +130 -0
- package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/baseConnectionPool.js +431 -0
- package/dist/ibmi-mcp-server/services/baseConnectionPool.js.map +1 -0
- package/dist/ibmi-mcp-server/services/connectionPool.d.ts +60 -0
- package/dist/ibmi-mcp-server/services/connectionPool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/connectionPool.js +153 -0
- package/dist/ibmi-mcp-server/services/connectionPool.js.map +1 -0
- package/dist/ibmi-mcp-server/services/securityValidation.d.ts +35 -0
- package/dist/ibmi-mcp-server/services/securityValidation.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/securityValidation.js +93 -0
- package/dist/ibmi-mcp-server/services/securityValidation.js.map +1 -0
- package/dist/ibmi-mcp-server/services/sourceManager.d.ts +82 -0
- package/dist/ibmi-mcp-server/services/sourceManager.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/sourceManager.js +151 -0
- package/dist/ibmi-mcp-server/services/sourceManager.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts +9 -0
- package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/index.js +9 -0
- package/dist/ibmi-mcp-server/tools/executeSql/index.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts +51 -0
- package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/logic.js +179 -0
- package/dist/ibmi-mcp-server/tools/executeSql/logic.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts +52 -0
- package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/registration.js +161 -0
- package/dist/ibmi-mcp-server/tools/executeSql/registration.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts +13 -0
- package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/index.js +13 -0
- package/dist/ibmi-mcp-server/tools/generateSql/index.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts +64 -0
- package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/logic.js +190 -0
- package/dist/ibmi-mcp-server/tools/generateSql/logic.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts +18 -0
- package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/registration.js +64 -0
- package/dist/ibmi-mcp-server/tools/generateSql/registration.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts +42 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.js +156 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/index.d.ts +6 -0
- package/dist/ibmi-mcp-server/utils/cli/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/index.js +6 -0
- package/dist/ibmi-mcp-server/utils/cli/index.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.d.ts +77 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.js +309 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.d.ts +143 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js +665 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigCache.d.ts +71 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigCache.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigCache.js +158 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigCache.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts +206 -0
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js +236 -0
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts +65 -0
- package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolFactory.js +236 -0
- package/dist/ibmi-mcp-server/utils/config/toolFactory.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolProcessor.d.ts +175 -0
- package/dist/ibmi-mcp-server/utils/config/toolProcessor.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolProcessor.js +460 -0
- package/dist/ibmi-mcp-server/utils/config/toolProcessor.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts +126 -0
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.js +240 -0
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/types.d.ts +74 -0
- package/dist/ibmi-mcp-server/utils/config/types.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/types.js +8 -0
- package/dist/ibmi-mcp-server/utils/config/types.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts +116 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js +426 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.d.ts +182 -0
- package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.js +726 -0
- package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.d.ts +90 -0
- package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.js +187 -0
- package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +270 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server/constants.d.ts +13 -0
- package/dist/mcp-server/constants.d.ts.map +1 -0
- package/dist/mcp-server/constants.js +13 -0
- package/dist/mcp-server/constants.js.map +1 -0
- package/dist/mcp-server/logging/index.d.ts +8 -0
- package/dist/mcp-server/logging/index.d.ts.map +1 -0
- package/dist/mcp-server/logging/index.js +8 -0
- package/dist/mcp-server/logging/index.js.map +1 -0
- package/dist/mcp-server/logging/setLevelHandler.d.ts +38 -0
- package/dist/mcp-server/logging/setLevelHandler.d.ts.map +1 -0
- package/dist/mcp-server/logging/setLevelHandler.js +83 -0
- package/dist/mcp-server/logging/setLevelHandler.js.map +1 -0
- package/dist/mcp-server/resources/echoResource/index.d.ts +14 -0
- package/dist/mcp-server/resources/echoResource/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/echoResource/index.js +14 -0
- package/dist/mcp-server/resources/echoResource/index.js.map +1 -0
- package/dist/mcp-server/resources/echoResource/logic.d.ts +37 -0
- package/dist/mcp-server/resources/echoResource/logic.d.ts.map +1 -0
- package/dist/mcp-server/resources/echoResource/logic.js +46 -0
- package/dist/mcp-server/resources/echoResource/logic.js.map +1 -0
- package/dist/mcp-server/resources/echoResource/registration.d.ts +7 -0
- package/dist/mcp-server/resources/echoResource/registration.d.ts.map +1 -0
- package/dist/mcp-server/resources/echoResource/registration.js +51 -0
- package/dist/mcp-server/resources/echoResource/registration.js.map +1 -0
- package/dist/mcp-server/resources/index.d.ts +10 -0
- package/dist/mcp-server/resources/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/index.js +19 -0
- package/dist/mcp-server/resources/index.js.map +1 -0
- package/dist/mcp-server/resources/utils/resource-utils.d.ts +43 -0
- package/dist/mcp-server/resources/utils/resource-utils.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/resource-utils.js +44 -0
- package/dist/mcp-server/resources/utils/resource-utils.js.map +1 -0
- package/dist/mcp-server/server.d.ts +23 -0
- package/dist/mcp-server/server.d.ts.map +1 -0
- package/dist/mcp-server/server.js +114 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/index.d.ts +8 -0
- package/dist/mcp-server/tools/catFactFetcher/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/index.js +8 -0
- package/dist/mcp-server/tools/catFactFetcher/index.js.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/logic.d.ts +52 -0
- package/dist/mcp-server/tools/catFactFetcher/logic.d.ts.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/logic.js +95 -0
- package/dist/mcp-server/tools/catFactFetcher/logic.js.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/registration.d.ts +9 -0
- package/dist/mcp-server/tools/catFactFetcher/registration.d.ts.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/registration.js +43 -0
- package/dist/mcp-server/tools/catFactFetcher/registration.js.map +1 -0
- package/dist/mcp-server/tools/echoTool/index.d.ts +13 -0
- package/dist/mcp-server/tools/echoTool/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/echoTool/index.js +13 -0
- package/dist/mcp-server/tools/echoTool/index.js.map +1 -0
- package/dist/mcp-server/tools/echoTool/logic.d.ts +69 -0
- package/dist/mcp-server/tools/echoTool/logic.d.ts.map +1 -0
- package/dist/mcp-server/tools/echoTool/logic.js +119 -0
- package/dist/mcp-server/tools/echoTool/logic.js.map +1 -0
- package/dist/mcp-server/tools/echoTool/registration.d.ts +9 -0
- package/dist/mcp-server/tools/echoTool/registration.d.ts.map +1 -0
- package/dist/mcp-server/tools/echoTool/registration.js +45 -0
- package/dist/mcp-server/tools/echoTool/registration.js.map +1 -0
- package/dist/mcp-server/tools/imageTest/index.d.ts +7 -0
- package/dist/mcp-server/tools/imageTest/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/imageTest/index.js +7 -0
- package/dist/mcp-server/tools/imageTest/index.js.map +1 -0
- package/dist/mcp-server/tools/imageTest/logic.d.ts +27 -0
- package/dist/mcp-server/tools/imageTest/logic.d.ts.map +1 -0
- package/dist/mcp-server/tools/imageTest/logic.js +44 -0
- package/dist/mcp-server/tools/imageTest/logic.js.map +1 -0
- package/dist/mcp-server/tools/imageTest/registration.d.ts +9 -0
- package/dist/mcp-server/tools/imageTest/registration.d.ts.map +1 -0
- package/dist/mcp-server/tools/imageTest/registration.js +49 -0
- package/dist/mcp-server/tools/imageTest/registration.js.map +1 -0
- package/dist/mcp-server/tools/index.d.ts +4 -0
- package/dist/mcp-server/tools/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/index.js +13 -0
- package/dist/mcp-server/tools/index.js.map +1 -0
- package/dist/mcp-server/tools/utils/tool-utils.d.ts +43 -0
- package/dist/mcp-server/tools/utils/tool-utils.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/tool-utils.js +44 -0
- package/dist/mcp-server/tools/utils/tool-utils.js.map +1 -0
- package/dist/mcp-server/transports/auth/authFactory.d.ts +11 -0
- package/dist/mcp-server/transports/auth/authFactory.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/authFactory.js +46 -0
- package/dist/mcp-server/transports/auth/authFactory.js.map +1 -0
- package/dist/mcp-server/transports/auth/authMiddleware.d.ts +20 -0
- package/dist/mcp-server/transports/auth/authMiddleware.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/authMiddleware.js +58 -0
- package/dist/mcp-server/transports/auth/authMiddleware.js.map +1 -0
- package/dist/mcp-server/transports/auth/index.d.ts +14 -0
- package/dist/mcp-server/transports/auth/index.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/index.js +12 -0
- package/dist/mcp-server/transports/auth/index.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authContext.d.ts +34 -0
- package/dist/mcp-server/transports/auth/lib/authContext.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authContext.js +25 -0
- package/dist/mcp-server/transports/auth/lib/authContext.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +15 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.js +9 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts +19 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.js +53 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts +18 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.js +2 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.d.ts +21 -0
- package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.js +64 -0
- package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts +8 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +118 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts +8 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +118 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -0
- package/dist/mcp-server/transports/core/autoTransportManager.d.ts +48 -0
- package/dist/mcp-server/transports/core/autoTransportManager.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/autoTransportManager.js +57 -0
- package/dist/mcp-server/transports/core/autoTransportManager.js.map +1 -0
- package/dist/mcp-server/transports/core/baseTransportManager.d.ts +17 -0
- package/dist/mcp-server/transports/core/baseTransportManager.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/baseTransportManager.js +20 -0
- package/dist/mcp-server/transports/core/baseTransportManager.js.map +1 -0
- package/dist/mcp-server/transports/core/headerUtils.d.ts +27 -0
- package/dist/mcp-server/transports/core/headerUtils.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/headerUtils.js +53 -0
- package/dist/mcp-server/transports/core/headerUtils.js.map +1 -0
- package/dist/mcp-server/transports/core/honoNodeBridge.d.ts +77 -0
- package/dist/mcp-server/transports/core/honoNodeBridge.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/honoNodeBridge.js +150 -0
- package/dist/mcp-server/transports/core/honoNodeBridge.js.map +1 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.d.ts +81 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.js +326 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.js.map +1 -0
- package/dist/mcp-server/transports/core/statelessTransportManager.d.ts +57 -0
- package/dist/mcp-server/transports/core/statelessTransportManager.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/statelessTransportManager.js +151 -0
- package/dist/mcp-server/transports/core/statelessTransportManager.js.map +1 -0
- package/dist/mcp-server/transports/core/transportRequest.d.ts +9 -0
- package/dist/mcp-server/transports/core/transportRequest.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/transportRequest.js +2 -0
- package/dist/mcp-server/transports/core/transportRequest.js.map +1 -0
- package/dist/mcp-server/transports/core/transportTypes.d.ts +112 -0
- package/dist/mcp-server/transports/core/transportTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/transportTypes.js +15 -0
- package/dist/mcp-server/transports/core/transportTypes.js.map +1 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts +25 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.js +86 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -0
- package/dist/mcp-server/transports/http/httpTransport.d.ts +27 -0
- package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpTransport.js +407 -0
- package/dist/mcp-server/transports/http/httpTransport.js.map +1 -0
- package/dist/mcp-server/transports/http/httpTypes.d.ts +17 -0
- package/dist/mcp-server/transports/http/httpTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpTypes.js +6 -0
- package/dist/mcp-server/transports/http/httpTypes.js.map +1 -0
- package/dist/mcp-server/transports/http/index.d.ts +8 -0
- package/dist/mcp-server/transports/http/index.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/index.js +7 -0
- package/dist/mcp-server/transports/http/index.js.map +1 -0
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts +21 -0
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.js +54 -0
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.js.map +1 -0
- package/dist/mcp-server/transports/stdio/index.d.ts +6 -0
- package/dist/mcp-server/transports/stdio/index.d.ts.map +1 -0
- package/dist/mcp-server/transports/stdio/index.js +6 -0
- package/dist/mcp-server/transports/stdio/index.js.map +1 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +43 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.js +71 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -0
- package/dist/services/duck-db/duckDBConnectionManager.d.ts +55 -0
- package/dist/services/duck-db/duckDBConnectionManager.d.ts.map +1 -0
- package/dist/services/duck-db/duckDBConnectionManager.js +184 -0
- package/dist/services/duck-db/duckDBConnectionManager.js.map +1 -0
- package/dist/services/duck-db/duckDBQueryExecutor.d.ts +18 -0
- package/dist/services/duck-db/duckDBQueryExecutor.d.ts.map +1 -0
- package/dist/services/duck-db/duckDBQueryExecutor.js +115 -0
- package/dist/services/duck-db/duckDBQueryExecutor.js.map +1 -0
- package/dist/services/duck-db/duckDBService.d.ts +27 -0
- package/dist/services/duck-db/duckDBService.d.ts.map +1 -0
- package/dist/services/duck-db/duckDBService.js +151 -0
- package/dist/services/duck-db/duckDBService.js.map +1 -0
- package/dist/services/duck-db/types.d.ts +135 -0
- package/dist/services/duck-db/types.d.ts.map +1 -0
- package/dist/services/duck-db/types.js +6 -0
- package/dist/services/duck-db/types.js.map +1 -0
- package/dist/services/llm-providers/openRouterProvider.d.ts +36 -0
- package/dist/services/llm-providers/openRouterProvider.d.ts.map +1 -0
- package/dist/services/llm-providers/openRouterProvider.js +235 -0
- package/dist/services/llm-providers/openRouterProvider.js.map +1 -0
- package/dist/services/supabase/supabaseClient.d.ts +25 -0
- package/dist/services/supabase/supabaseClient.d.ts.map +1 -0
- package/dist/services/supabase/supabaseClient.js +68 -0
- package/dist/services/supabase/supabaseClient.js.map +1 -0
- package/dist/storage/duckdbExample.d.ts +8 -0
- package/dist/storage/duckdbExample.d.ts.map +1 -0
- package/dist/storage/duckdbExample.js +197 -0
- package/dist/storage/duckdbExample.js.map +1 -0
- package/dist/types-global/errors.d.ts +101 -0
- package/dist/types-global/errors.d.ts.map +1 -0
- package/dist/types-global/errors.js +109 -0
- package/dist/types-global/errors.js.map +1 -0
- package/dist/utils/formatting/index.d.ts +10 -0
- package/dist/utils/formatting/index.d.ts.map +1 -0
- package/dist/utils/formatting/index.js +10 -0
- package/dist/utils/formatting/index.js.map +1 -0
- package/dist/utils/formatting/markdownBuilder.d.ts +348 -0
- package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -0
- package/dist/utils/formatting/markdownBuilder.js +501 -0
- package/dist/utils/formatting/markdownBuilder.js.map +1 -0
- package/dist/utils/formatting/sqlFormattingUtils.d.ts +69 -0
- package/dist/utils/formatting/sqlFormattingUtils.d.ts.map +1 -0
- package/dist/utils/formatting/sqlFormattingUtils.js +131 -0
- package/dist/utils/formatting/sqlFormattingUtils.js.map +1 -0
- package/dist/utils/formatting/tableFormatter.d.ts +268 -0
- package/dist/utils/formatting/tableFormatter.d.ts.map +1 -0
- package/dist/utils/formatting/tableFormatter.js +550 -0
- package/dist/utils/formatting/tableFormatter.js.map +1 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/internal/asyncContext.d.ts +35 -0
- package/dist/utils/internal/asyncContext.d.ts.map +1 -0
- package/dist/utils/internal/asyncContext.js +38 -0
- package/dist/utils/internal/asyncContext.js.map +1 -0
- package/dist/utils/internal/errorHandler.d.ts +95 -0
- package/dist/utils/internal/errorHandler.d.ts.map +1 -0
- package/dist/utils/internal/errorHandler.js +210 -0
- package/dist/utils/internal/errorHandler.js.map +1 -0
- package/dist/utils/internal/index.d.ts +12 -0
- package/dist/utils/internal/index.d.ts.map +1 -0
- package/dist/utils/internal/index.js +12 -0
- package/dist/utils/internal/index.js.map +1 -0
- package/dist/utils/internal/logger.d.ts +30 -0
- package/dist/utils/internal/logger.d.ts.map +1 -0
- package/dist/utils/internal/logger.js +228 -0
- package/dist/utils/internal/logger.js.map +1 -0
- package/dist/utils/internal/logging-helpers.d.ts +49 -0
- package/dist/utils/internal/logging-helpers.d.ts.map +1 -0
- package/dist/utils/internal/logging-helpers.js +60 -0
- package/dist/utils/internal/logging-helpers.js.map +1 -0
- package/dist/utils/internal/performance.d.ts +19 -0
- package/dist/utils/internal/performance.d.ts.map +1 -0
- package/dist/utils/internal/performance.js +110 -0
- package/dist/utils/internal/performance.js.map +1 -0
- package/dist/utils/internal/requestContext.d.ts +41 -0
- package/dist/utils/internal/requestContext.d.ts.map +1 -0
- package/dist/utils/internal/requestContext.js +47 -0
- package/dist/utils/internal/requestContext.js.map +1 -0
- package/dist/utils/metrics/index.d.ts +8 -0
- package/dist/utils/metrics/index.d.ts.map +1 -0
- package/dist/utils/metrics/index.js +8 -0
- package/dist/utils/metrics/index.js.map +1 -0
- package/dist/utils/metrics/tokenCounter.d.ts +36 -0
- package/dist/utils/metrics/tokenCounter.d.ts.map +1 -0
- package/dist/utils/metrics/tokenCounter.js +115 -0
- package/dist/utils/metrics/tokenCounter.js.map +1 -0
- package/dist/utils/network/fetchWithTimeout.d.ts +22 -0
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -0
- package/dist/utils/network/fetchWithTimeout.js +78 -0
- package/dist/utils/network/fetchWithTimeout.js.map +1 -0
- package/dist/utils/network/index.d.ts +7 -0
- package/dist/utils/network/index.d.ts.map +1 -0
- package/dist/utils/network/index.js +6 -0
- package/dist/utils/network/index.js.map +1 -0
- package/dist/utils/parsing/dateParser.d.ts +73 -0
- package/dist/utils/parsing/dateParser.d.ts.map +1 -0
- package/dist/utils/parsing/dateParser.js +108 -0
- package/dist/utils/parsing/dateParser.js.map +1 -0
- package/dist/utils/parsing/index.d.ts +9 -0
- package/dist/utils/parsing/index.d.ts.map +1 -0
- package/dist/utils/parsing/index.js +9 -0
- package/dist/utils/parsing/index.js.map +1 -0
- package/dist/utils/parsing/jsonParser.d.ts +83 -0
- package/dist/utils/parsing/jsonParser.d.ts.map +1 -0
- package/dist/utils/parsing/jsonParser.js +128 -0
- package/dist/utils/parsing/jsonParser.js.map +1 -0
- package/dist/utils/scheduling/index.d.ts +7 -0
- package/dist/utils/scheduling/index.d.ts.map +1 -0
- package/dist/utils/scheduling/index.js +7 -0
- package/dist/utils/scheduling/index.js.map +1 -0
- package/dist/utils/scheduling/scheduler.d.ts +73 -0
- package/dist/utils/scheduling/scheduler.d.ts.map +1 -0
- package/dist/utils/scheduling/scheduler.js +155 -0
- package/dist/utils/scheduling/scheduler.js.map +1 -0
- package/dist/utils/security/idGenerator.d.ts +144 -0
- package/dist/utils/security/idGenerator.d.ts.map +1 -0
- package/dist/utils/security/idGenerator.js +232 -0
- package/dist/utils/security/idGenerator.js.map +1 -0
- package/dist/utils/security/index.d.ts +10 -0
- package/dist/utils/security/index.d.ts.map +1 -0
- package/dist/utils/security/index.js +10 -0
- package/dist/utils/security/index.js.map +1 -0
- package/dist/utils/security/rateLimiter.d.ts +109 -0
- package/dist/utils/security/rateLimiter.d.ts.map +1 -0
- package/dist/utils/security/rateLimiter.js +202 -0
- package/dist/utils/security/rateLimiter.js.map +1 -0
- package/dist/utils/security/sanitization.d.ts +185 -0
- package/dist/utils/security/sanitization.d.ts.map +1 -0
- package/dist/utils/security/sanitization.js +472 -0
- package/dist/utils/security/sanitization.js.map +1 -0
- package/dist/utils/telemetry/instrumentation.d.ts +8 -0
- package/dist/utils/telemetry/instrumentation.d.ts.map +1 -0
- package/dist/utils/telemetry/instrumentation.js +121 -0
- package/dist/utils/telemetry/instrumentation.js.map +1 -0
- package/dist/utils/telemetry/semconv.d.ts +16 -0
- package/dist/utils/telemetry/semconv.d.ts.map +1 -0
- package/dist/utils/telemetry/semconv.js +16 -0
- package/dist/utils/telemetry/semconv.js.map +1 -0
- package/package.json +161 -0
package/README.md
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# IBM i MCP Server
|
|
2
|
+
|
|
3
|
+
The Model Context Protocol (MCP) server for IBM i systems.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Install dependencies
|
|
9
|
+
npm install
|
|
10
|
+
|
|
11
|
+
# Build
|
|
12
|
+
npm run build
|
|
13
|
+
|
|
14
|
+
# Run server (HTTP mode)
|
|
15
|
+
npm run start:http
|
|
16
|
+
|
|
17
|
+
# Run server (stdio mode)
|
|
18
|
+
npm run start:stdio
|
|
19
|
+
|
|
20
|
+
# Run tests
|
|
21
|
+
npm test
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Configuration
|
|
25
|
+
|
|
26
|
+
Create a `.env` file in the **root of the monorepo** (parent directory):
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
cp ../.env.example ../.env
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The server will automatically detect configuration in:
|
|
33
|
+
|
|
34
|
+
1. Current working directory (for production deployments)
|
|
35
|
+
2. Parent directory (for monorepo development)
|
|
36
|
+
3. Server directory (for local overrides)
|
|
37
|
+
|
|
38
|
+
## Tool Configuration
|
|
39
|
+
|
|
40
|
+
By default, the server loads SQL tools from `../tools/`. Override with:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
TOOLS_YAML_PATH=../tools npm run start:http
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Or set in your `.env` file:
|
|
47
|
+
|
|
48
|
+
```ini
|
|
49
|
+
TOOLS_YAML_PATH=tools
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Documentation
|
|
53
|
+
|
|
54
|
+
See the [root README](../README.md) for complete documentation and deployment guides.
|
|
55
|
+
|
|
56
|
+
## Development
|
|
57
|
+
|
|
58
|
+
This is the main server package within the monorepo. All server development happens here.
|
|
59
|
+
|
|
60
|
+
- **Source**: `src/`
|
|
61
|
+
- **Tests**: `tests/`
|
|
62
|
+
- **Scripts**: `scripts/`
|
|
63
|
+
- **Build Output**: `dist/`
|
|
64
|
+
|
|
65
|
+
### Available Scripts
|
|
66
|
+
|
|
67
|
+
- `npm run build` - Build the server
|
|
68
|
+
- `npm run rebuild` - Clean and rebuild
|
|
69
|
+
- `npm run start:http` - Start in HTTP mode
|
|
70
|
+
- `npm run start:stdio` - Start in stdio mode
|
|
71
|
+
- `npm test` - Run tests
|
|
72
|
+
- `npm run test:watch` - Run tests in watch mode
|
|
73
|
+
- `npm run test:coverage` - Run tests with coverage
|
|
74
|
+
- `npm run lint` - Lint code
|
|
75
|
+
- `npm run format` - Format code with Prettier
|
|
76
|
+
- `npm run validate` - Validate tool configurations
|
|
77
|
+
|
|
78
|
+
### Architecture
|
|
79
|
+
|
|
80
|
+
See [CLAUDE.md](../CLAUDE.md) for architectural standards and development guidelines.
|
|
81
|
+
|
|
82
|
+
## Monorepo Structure
|
|
83
|
+
|
|
84
|
+
This server is part of a monorepo:
|
|
85
|
+
|
|
86
|
+
- `../tools/` - SQL tool YAML configurations
|
|
87
|
+
- `../agents/` - Agent implementations and examples
|
|
88
|
+
- `../apps/` - Deployment configurations (Docker, Gateway, n8n)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Loads, validates, and exports application configuration.
|
|
3
|
+
* This module centralizes configuration management, sourcing values from
|
|
4
|
+
* environment variables and `package.json`. It uses Zod for schema validation
|
|
5
|
+
* to ensure type safety and correctness of configuration parameters.
|
|
6
|
+
*
|
|
7
|
+
* @module src/config/index
|
|
8
|
+
*/
|
|
9
|
+
export declare const config: {
|
|
10
|
+
pkg: {
|
|
11
|
+
name: string;
|
|
12
|
+
version: string;
|
|
13
|
+
};
|
|
14
|
+
mcpServerName: string;
|
|
15
|
+
mcpServerVersion: string;
|
|
16
|
+
logLevel: string;
|
|
17
|
+
logsPath: string | null;
|
|
18
|
+
environment: string;
|
|
19
|
+
mcpTransportType: "stdio" | "http";
|
|
20
|
+
mcpSessionMode: "stateless" | "stateful" | "auto";
|
|
21
|
+
mcpHttpPort: number;
|
|
22
|
+
mcpHttpHost: string;
|
|
23
|
+
mcpHttpEndpointPath: string;
|
|
24
|
+
mcpHttpMaxPortRetries: number;
|
|
25
|
+
mcpHttpPortRetryDelayMs: number;
|
|
26
|
+
mcpStatefulSessionStaleTimeoutMs: number;
|
|
27
|
+
mcpAllowedOrigins: string[] | undefined;
|
|
28
|
+
mcpAuthSecretKey: string | undefined;
|
|
29
|
+
mcpAuthMode: "jwt" | "oauth" | "ibmi" | "none";
|
|
30
|
+
oauthIssuerUrl: string | undefined;
|
|
31
|
+
oauthJwksUri: string | undefined;
|
|
32
|
+
oauthAudience: string | undefined;
|
|
33
|
+
devMcpClientId: string | undefined;
|
|
34
|
+
devMcpScopes: string[] | undefined;
|
|
35
|
+
openrouterAppUrl: string;
|
|
36
|
+
openrouterAppName: string;
|
|
37
|
+
openrouterApiKey: string | undefined;
|
|
38
|
+
llmDefaultModel: string;
|
|
39
|
+
llmDefaultTemperature: number | undefined;
|
|
40
|
+
llmDefaultTopP: number | undefined;
|
|
41
|
+
llmDefaultMaxTokens: number | undefined;
|
|
42
|
+
llmDefaultTopK: number | undefined;
|
|
43
|
+
llmDefaultMinP: number | undefined;
|
|
44
|
+
oauthProxy: {
|
|
45
|
+
authorizationUrl: string | undefined;
|
|
46
|
+
tokenUrl: string | undefined;
|
|
47
|
+
revocationUrl: string | undefined;
|
|
48
|
+
issuerUrl: string | undefined;
|
|
49
|
+
serviceDocumentationUrl: string | undefined;
|
|
50
|
+
defaultClientRedirectUris: string[] | undefined;
|
|
51
|
+
} | undefined;
|
|
52
|
+
supabase: {
|
|
53
|
+
url: string;
|
|
54
|
+
anonKey: string;
|
|
55
|
+
serviceRoleKey: string | undefined;
|
|
56
|
+
} | undefined;
|
|
57
|
+
openTelemetry: {
|
|
58
|
+
enabled: boolean;
|
|
59
|
+
serviceName: string;
|
|
60
|
+
serviceVersion: string;
|
|
61
|
+
tracesEndpoint: string | undefined;
|
|
62
|
+
metricsEndpoint: string | undefined;
|
|
63
|
+
samplingRatio: number;
|
|
64
|
+
logLevel: "NONE" | "ERROR" | "WARN" | "INFO" | "DEBUG" | "VERBOSE" | "ALL";
|
|
65
|
+
};
|
|
66
|
+
/** IBM i DB2 configuration. Undefined if no related env vars are set. */
|
|
67
|
+
db2i: {
|
|
68
|
+
host: string;
|
|
69
|
+
user: string;
|
|
70
|
+
password: string;
|
|
71
|
+
ignoreUnauthorized: boolean;
|
|
72
|
+
} | undefined;
|
|
73
|
+
/** Path to YAML tools configuration file. From `TOOLS_YAML_PATH`. */
|
|
74
|
+
toolsYamlPath: string | undefined;
|
|
75
|
+
/** YAML configuration merge options. From `YAML_MERGE_*` environment variables. */
|
|
76
|
+
yamlMergeOptions: {
|
|
77
|
+
mergeArrays: boolean;
|
|
78
|
+
allowDuplicateTools: boolean;
|
|
79
|
+
allowDuplicateSources: boolean;
|
|
80
|
+
validateMerged: boolean;
|
|
81
|
+
};
|
|
82
|
+
/** IBM i HTTP Authentication configuration. From `IBMI_AUTH_*` environment variables. */
|
|
83
|
+
ibmiHttpAuth: {
|
|
84
|
+
enabled: boolean;
|
|
85
|
+
allowHttp: boolean;
|
|
86
|
+
tokenExpirySeconds: number;
|
|
87
|
+
cleanupIntervalSeconds: number;
|
|
88
|
+
maxConcurrentSessions: number;
|
|
89
|
+
privateKeyPath: string | undefined;
|
|
90
|
+
publicKeyPath: string | undefined;
|
|
91
|
+
keyId: string | undefined;
|
|
92
|
+
};
|
|
93
|
+
/** Enable automatic reloading of YAML tools when configuration files change. From `YAML_AUTO_RELOAD`. Default: true. */
|
|
94
|
+
yamlAutoReload: boolean;
|
|
95
|
+
/** Selected toolsets for filtering tools. Set via CLI --toolsets option or SELECTED_TOOLSETS environment variable. */
|
|
96
|
+
selectedToolsets: string[] | undefined;
|
|
97
|
+
};
|
|
98
|
+
export declare const logLevel: string;
|
|
99
|
+
export declare const environment: string;
|
|
100
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuYH,eAAO,MAAM,MAAM;;cAxTiB,MAAM;iBAAW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgYzD,yEAAyE;;;;;;;IAWzE,qEAAqE;;IAGrE,mFAAmF;;;;;;;IAQnF,yFAAyF;;;;;;;;;;;IAYzF,wHAAwH;;IAGxH,sHAAsH;sBAGhG,MAAM,EAAE,GAAG,SAAS;CAC3C,CAAC;AAqBF,eAAO,MAAM,QAAQ,EAAE,MAAwB,CAAC;AAChD,eAAO,MAAM,WAAW,EAAE,MAA2B,CAAC"}
|
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Loads, validates, and exports application configuration.
|
|
3
|
+
* This module centralizes configuration management, sourcing values from
|
|
4
|
+
* environment variables and `package.json`. It uses Zod for schema validation
|
|
5
|
+
* to ensure type safety and correctness of configuration parameters.
|
|
6
|
+
*
|
|
7
|
+
* @module src/config/index
|
|
8
|
+
*/
|
|
9
|
+
import dotenv from "dotenv";
|
|
10
|
+
import { existsSync, mkdirSync, readFileSync, statSync } from "fs";
|
|
11
|
+
import path, { dirname, join } from "path";
|
|
12
|
+
import { fileURLToPath } from "url";
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
// Load .env from multiple possible locations for monorepo flexibility
|
|
15
|
+
// Priority order: current working directory > parent directory > server directory
|
|
16
|
+
const envLocations = [
|
|
17
|
+
// 1. Current working directory (for production/user deployment)
|
|
18
|
+
path.resolve(process.cwd(), ".env"),
|
|
19
|
+
// 2. Parent directory (for monorepo development)
|
|
20
|
+
path.resolve(process.cwd(), "../.env"),
|
|
21
|
+
// 3. Two levels up (if running from dist/)
|
|
22
|
+
path.resolve(process.cwd(), "../../.env"),
|
|
23
|
+
];
|
|
24
|
+
// Load from first location that exists
|
|
25
|
+
let envLoaded = false;
|
|
26
|
+
for (const envPath of envLocations) {
|
|
27
|
+
if (existsSync(envPath)) {
|
|
28
|
+
dotenv.config({ path: envPath });
|
|
29
|
+
envLoaded = true;
|
|
30
|
+
if (process.stdout.isTTY && process.env.MCP_LOG_LEVEL === "debug") {
|
|
31
|
+
console.log(`Loaded .env from: ${envPath}`);
|
|
32
|
+
}
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Fallback: try default dotenv behavior (looks in cwd)
|
|
37
|
+
if (!envLoaded) {
|
|
38
|
+
dotenv.config();
|
|
39
|
+
}
|
|
40
|
+
// --- Determine Project Root ---
|
|
41
|
+
const findProjectRoot = (startDir) => {
|
|
42
|
+
let currentDir = startDir;
|
|
43
|
+
// If the start directory is in `dist`, start searching from the parent directory.
|
|
44
|
+
if (path.basename(currentDir) === "dist") {
|
|
45
|
+
currentDir = path.dirname(currentDir);
|
|
46
|
+
}
|
|
47
|
+
while (true) {
|
|
48
|
+
const packageJsonPath = join(currentDir, "package.json");
|
|
49
|
+
if (existsSync(packageJsonPath)) {
|
|
50
|
+
return currentDir;
|
|
51
|
+
}
|
|
52
|
+
const parentDir = dirname(currentDir);
|
|
53
|
+
if (parentDir === currentDir) {
|
|
54
|
+
throw new Error(`Could not find project root (package.json) starting from ${startDir}`);
|
|
55
|
+
}
|
|
56
|
+
currentDir = parentDir;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
let projectRoot;
|
|
60
|
+
try {
|
|
61
|
+
const currentModuleDir = dirname(fileURLToPath(import.meta.url));
|
|
62
|
+
projectRoot = findProjectRoot(currentModuleDir);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
66
|
+
console.error(`FATAL: Error determining project root: ${errorMessage}`);
|
|
67
|
+
projectRoot = process.cwd();
|
|
68
|
+
if (process.stdout.isTTY) {
|
|
69
|
+
console.warn(`Warning: Using process.cwd() (${projectRoot}) as fallback project root.`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// --- End Determine Project Root ---
|
|
73
|
+
/**
|
|
74
|
+
* Loads and parses the package.json file from the project root.
|
|
75
|
+
* @returns The parsed package.json object or a fallback default.
|
|
76
|
+
* @private
|
|
77
|
+
*/
|
|
78
|
+
const loadPackageJson = () => {
|
|
79
|
+
const pkgPath = join(projectRoot, "package.json");
|
|
80
|
+
const fallback = { name: "ibmi-mcp-server", version: "1.0.0" };
|
|
81
|
+
if (!existsSync(pkgPath)) {
|
|
82
|
+
if (process.stdout.isTTY) {
|
|
83
|
+
console.warn(`Warning: package.json not found at ${pkgPath}. Using fallback values. This is expected in some environments (e.g., Docker) but may indicate an issue with project root detection.`);
|
|
84
|
+
}
|
|
85
|
+
return fallback;
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
const fileContents = readFileSync(pkgPath, "utf-8");
|
|
89
|
+
const parsed = JSON.parse(fileContents);
|
|
90
|
+
return {
|
|
91
|
+
name: typeof parsed.name === "string" ? parsed.name : fallback.name,
|
|
92
|
+
version: typeof parsed.version === "string" ? parsed.version : fallback.version,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
if (process.stdout.isTTY) {
|
|
97
|
+
console.error("Warning: Could not read or parse package.json. Using hardcoded defaults.", error);
|
|
98
|
+
}
|
|
99
|
+
return fallback;
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const pkg = loadPackageJson();
|
|
103
|
+
const EnvSchema = z.object({
|
|
104
|
+
// --- Existing MCP and other variables ---
|
|
105
|
+
MCP_SERVER_NAME: z.string().optional(),
|
|
106
|
+
MCP_SERVER_VERSION: z.string().optional(),
|
|
107
|
+
MCP_LOG_LEVEL: z.string().default("debug"),
|
|
108
|
+
LOGS_DIR: z.string().default(path.join(projectRoot, "logs")),
|
|
109
|
+
NODE_ENV: z.string().default("development"),
|
|
110
|
+
MCP_TRANSPORT_TYPE: z.enum(["stdio", "http"]).default("stdio"),
|
|
111
|
+
MCP_SESSION_MODE: z.enum(["stateless", "stateful", "auto"]).default("auto"),
|
|
112
|
+
MCP_HTTP_PORT: z.coerce.number().int().positive().default(3010),
|
|
113
|
+
MCP_HTTP_HOST: z.string().default("127.0.0.1"),
|
|
114
|
+
MCP_HTTP_ENDPOINT_PATH: z.string().default("/mcp"),
|
|
115
|
+
MCP_HTTP_MAX_PORT_RETRIES: z.coerce.number().int().nonnegative().default(15),
|
|
116
|
+
MCP_HTTP_PORT_RETRY_DELAY_MS: z.coerce
|
|
117
|
+
.number()
|
|
118
|
+
.int()
|
|
119
|
+
.nonnegative()
|
|
120
|
+
.default(50),
|
|
121
|
+
MCP_STATEFUL_SESSION_STALE_TIMEOUT_MS: z.coerce
|
|
122
|
+
.number()
|
|
123
|
+
.int()
|
|
124
|
+
.positive()
|
|
125
|
+
.default(1_800_000),
|
|
126
|
+
MCP_ALLOWED_ORIGINS: z.string().optional(),
|
|
127
|
+
MCP_AUTH_SECRET_KEY: z
|
|
128
|
+
.string()
|
|
129
|
+
.min(32, "MCP_AUTH_SECRET_KEY must be at least 32 characters long for security reasons.")
|
|
130
|
+
.optional(),
|
|
131
|
+
MCP_AUTH_MODE: z.enum(["jwt", "oauth", "ibmi", "none"]).default("none"),
|
|
132
|
+
OAUTH_ISSUER_URL: z.string().url().optional(),
|
|
133
|
+
OAUTH_JWKS_URI: z.string().url().optional(),
|
|
134
|
+
OAUTH_AUDIENCE: z.string().optional(),
|
|
135
|
+
DEV_MCP_CLIENT_ID: z.string().optional(),
|
|
136
|
+
DEV_MCP_SCOPES: z.string().optional(),
|
|
137
|
+
OPENROUTER_APP_URL: z
|
|
138
|
+
.string()
|
|
139
|
+
.url("OPENROUTER_APP_URL must be a valid URL (e.g., http://localhost:3000)")
|
|
140
|
+
.optional(),
|
|
141
|
+
OPENROUTER_APP_NAME: z.string().optional(),
|
|
142
|
+
OPENROUTER_API_KEY: z.string().optional(),
|
|
143
|
+
LLM_DEFAULT_MODEL: z.string().default("google/gemini-2.5-flash"),
|
|
144
|
+
LLM_DEFAULT_TEMPERATURE: z.coerce.number().min(0).max(2).optional(),
|
|
145
|
+
LLM_DEFAULT_TOP_P: z.coerce.number().min(0).max(1).optional(),
|
|
146
|
+
LLM_DEFAULT_MAX_TOKENS: z.coerce.number().int().positive().optional(),
|
|
147
|
+
LLM_DEFAULT_TOP_K: z.coerce.number().int().nonnegative().optional(),
|
|
148
|
+
LLM_DEFAULT_MIN_P: z.coerce.number().min(0).max(1).optional(),
|
|
149
|
+
OAUTH_PROXY_AUTHORIZATION_URL: z
|
|
150
|
+
.string()
|
|
151
|
+
.url("OAUTH_PROXY_AUTHORIZATION_URL must be a valid URL.")
|
|
152
|
+
.optional(),
|
|
153
|
+
OAUTH_PROXY_TOKEN_URL: z
|
|
154
|
+
.string()
|
|
155
|
+
.url("OAUTH_PROXY_TOKEN_URL must be a valid URL.")
|
|
156
|
+
.optional(),
|
|
157
|
+
OAUTH_PROXY_REVOCATION_URL: z
|
|
158
|
+
.string()
|
|
159
|
+
.url("OAUTH_PROXY_REVOCATION_URL must be a valid URL.")
|
|
160
|
+
.optional(),
|
|
161
|
+
OAUTH_PROXY_ISSUER_URL: z
|
|
162
|
+
.string()
|
|
163
|
+
.url("OAUTH_PROXY_ISSUER_URL must be a valid URL.")
|
|
164
|
+
.optional(),
|
|
165
|
+
OAUTH_PROXY_SERVICE_DOCUMENTATION_URL: z
|
|
166
|
+
.string()
|
|
167
|
+
.url("OAUTH_PROXY_SERVICE_DOCUMENTATION_URL must be a valid URL.")
|
|
168
|
+
.optional(),
|
|
169
|
+
OAUTH_PROXY_DEFAULT_CLIENT_REDIRECT_URIS: z.string().optional(),
|
|
170
|
+
SUPABASE_URL: z.string().url("SUPABASE_URL must be a valid URL.").optional(),
|
|
171
|
+
SUPABASE_ANON_KEY: z.string().optional(),
|
|
172
|
+
SUPABASE_SERVICE_ROLE_KEY: z.string().optional(),
|
|
173
|
+
// --- START: OpenTelemetry Configuration ---
|
|
174
|
+
/** If 'true', OpenTelemetry will be initialized and enabled. Default: 'false'. */
|
|
175
|
+
OTEL_ENABLED: z
|
|
176
|
+
.string()
|
|
177
|
+
.transform((v) => v.toLowerCase() === "true")
|
|
178
|
+
.default("false"),
|
|
179
|
+
/** The logical name of the service. Defaults to MCP_SERVER_NAME or package name. */
|
|
180
|
+
OTEL_SERVICE_NAME: z.string().optional(),
|
|
181
|
+
/** The version of the service. Defaults to MCP_SERVER_VERSION or package version. */
|
|
182
|
+
OTEL_SERVICE_VERSION: z.string().optional(),
|
|
183
|
+
/** The OTLP endpoint for traces. If not set, traces are logged to a file in development. */
|
|
184
|
+
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: z.string().url().optional(),
|
|
185
|
+
/** The OTLP endpoint for metrics. If not set, metrics are not exported. */
|
|
186
|
+
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: z.string().url().optional(),
|
|
187
|
+
/** Sampling ratio for traces (0.0 to 1.0). 1.0 means sample all. Default: 1.0 */
|
|
188
|
+
OTEL_TRACES_SAMPLER_ARG: z.coerce.number().min(0).max(1).default(1.0),
|
|
189
|
+
/** Log level for OpenTelemetry's internal diagnostic logger. Default: "INFO". */
|
|
190
|
+
OTEL_LOG_LEVEL: z
|
|
191
|
+
.enum(["NONE", "ERROR", "WARN", "INFO", "DEBUG", "VERBOSE", "ALL"])
|
|
192
|
+
.default("INFO"),
|
|
193
|
+
/** IBM i Mapepire daemon server host. From `DB2i_HOST`. */
|
|
194
|
+
DB2i_HOST: z
|
|
195
|
+
.string()
|
|
196
|
+
.min(1, "DB2i_HOST is required for IBM i connections.")
|
|
197
|
+
.optional(),
|
|
198
|
+
/** IBM i DB2 user name. From `DB2i_USER`. */
|
|
199
|
+
DB2i_USER: z
|
|
200
|
+
.string()
|
|
201
|
+
.min(1, "DB2i_USER is required for IBM i connections.")
|
|
202
|
+
.optional(),
|
|
203
|
+
/** IBM i DB2 password. From `DB2i_PASS`. */
|
|
204
|
+
DB2i_PASS: z
|
|
205
|
+
.string()
|
|
206
|
+
.min(1, "DB2i_PASS is required for IBM i connections.")
|
|
207
|
+
.optional(),
|
|
208
|
+
/** Ignore unauthorized SSL certificates for Mapepire. From `DB2i_IGNORE_UNAUTHORIZED`. Default: true. */
|
|
209
|
+
DB2i_IGNORE_UNAUTHORIZED: z
|
|
210
|
+
.string()
|
|
211
|
+
.optional()
|
|
212
|
+
.default("true")
|
|
213
|
+
.transform((val) => val === "true" || val === "1"),
|
|
214
|
+
/** Path to YAML tools configuration file. From `TOOLS_YAML_PATH`. */
|
|
215
|
+
TOOLS_YAML_PATH: z
|
|
216
|
+
.string()
|
|
217
|
+
.min(1, "TOOLS_YAML_PATH is required for YAML-based tools.")
|
|
218
|
+
.optional(),
|
|
219
|
+
/** YAML merge options configuration. From `YAML_MERGE_*` environment variables. */
|
|
220
|
+
YAML_MERGE_ARRAYS: z
|
|
221
|
+
.string()
|
|
222
|
+
.optional()
|
|
223
|
+
.default("true")
|
|
224
|
+
.transform((val) => val === "true"),
|
|
225
|
+
YAML_ALLOW_DUPLICATE_TOOLS: z
|
|
226
|
+
.string()
|
|
227
|
+
.optional()
|
|
228
|
+
.default("false")
|
|
229
|
+
.transform((val) => val === "true"),
|
|
230
|
+
YAML_ALLOW_DUPLICATE_SOURCES: z
|
|
231
|
+
.string()
|
|
232
|
+
.optional()
|
|
233
|
+
.default("false")
|
|
234
|
+
.transform((val) => val === "true"),
|
|
235
|
+
YAML_VALIDATE_MERGED: z
|
|
236
|
+
.string()
|
|
237
|
+
.optional()
|
|
238
|
+
.default("true")
|
|
239
|
+
.transform((val) => val === "true"),
|
|
240
|
+
/** IBM i HTTP Authentication configuration. From `IBMI_AUTH_*` environment variables. */
|
|
241
|
+
IBMI_HTTP_AUTH_ENABLED: z
|
|
242
|
+
.string()
|
|
243
|
+
.optional()
|
|
244
|
+
.default("false")
|
|
245
|
+
.transform((val) => val === "true" || val === "1"),
|
|
246
|
+
IBMI_AUTH_ALLOW_HTTP: z
|
|
247
|
+
.string()
|
|
248
|
+
.optional()
|
|
249
|
+
.default("false")
|
|
250
|
+
.transform((val) => val === "true" || val === "1"),
|
|
251
|
+
IBMI_AUTH_TOKEN_EXPIRY_SECONDS: z.coerce
|
|
252
|
+
.number()
|
|
253
|
+
.int()
|
|
254
|
+
.positive()
|
|
255
|
+
.default(3600),
|
|
256
|
+
IBMI_AUTH_CLEANUP_INTERVAL_SECONDS: z.coerce
|
|
257
|
+
.number()
|
|
258
|
+
.int()
|
|
259
|
+
.positive()
|
|
260
|
+
.default(300),
|
|
261
|
+
IBMI_AUTH_MAX_CONCURRENT_SESSIONS: z.coerce
|
|
262
|
+
.number()
|
|
263
|
+
.int()
|
|
264
|
+
.positive()
|
|
265
|
+
.default(100),
|
|
266
|
+
IBMI_AUTH_PRIVATE_KEY_PATH: z.string().min(1).optional(),
|
|
267
|
+
IBMI_AUTH_PUBLIC_KEY_PATH: z.string().min(1).optional(),
|
|
268
|
+
IBMI_AUTH_KEY_ID: z.string().min(1).optional(),
|
|
269
|
+
/** Enable automatic reloading of YAML tools when configuration files change. From `YAML_AUTO_RELOAD`. Default: true. */
|
|
270
|
+
YAML_AUTO_RELOAD: z
|
|
271
|
+
.string()
|
|
272
|
+
.optional()
|
|
273
|
+
.default("true")
|
|
274
|
+
.transform((val) => val === "true" || val === "1"),
|
|
275
|
+
SELECTED_TOOLSETS: z.string().optional(),
|
|
276
|
+
});
|
|
277
|
+
const parsedEnv = EnvSchema.safeParse(process.env);
|
|
278
|
+
if (!parsedEnv.success) {
|
|
279
|
+
if (process.stdout.isTTY) {
|
|
280
|
+
console.error("❌ Invalid environment variables found:", parsedEnv.error.flatten().fieldErrors);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
const env = parsedEnv.success ? parsedEnv.data : EnvSchema.parse({});
|
|
284
|
+
const ensureDirectory = (dirPath, rootDir, dirName) => {
|
|
285
|
+
const resolvedDirPath = path.isAbsolute(dirPath)
|
|
286
|
+
? dirPath
|
|
287
|
+
: path.resolve(rootDir, dirPath);
|
|
288
|
+
if (!resolvedDirPath.startsWith(rootDir + path.sep) &&
|
|
289
|
+
resolvedDirPath !== rootDir) {
|
|
290
|
+
if (process.stdout.isTTY) {
|
|
291
|
+
console.error(`Error: ${dirName} path "${dirPath}" resolves to "${resolvedDirPath}", which is outside the project boundary "${rootDir}".`);
|
|
292
|
+
}
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
if (!existsSync(resolvedDirPath)) {
|
|
296
|
+
try {
|
|
297
|
+
mkdirSync(resolvedDirPath, { recursive: true });
|
|
298
|
+
if (process.stdout.isTTY) {
|
|
299
|
+
console.log(`Created ${dirName} directory: ${resolvedDirPath}`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
catch (err) {
|
|
303
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
304
|
+
if (process.stdout.isTTY) {
|
|
305
|
+
console.error(`Error creating ${dirName} directory at ${resolvedDirPath}: ${errorMessage}`);
|
|
306
|
+
}
|
|
307
|
+
return null;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
try {
|
|
312
|
+
const stats = statSync(resolvedDirPath);
|
|
313
|
+
if (!stats.isDirectory()) {
|
|
314
|
+
if (process.stdout.isTTY) {
|
|
315
|
+
console.error(`Error: ${dirName} path ${resolvedDirPath} exists but is not a directory.`);
|
|
316
|
+
}
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
catch (statError) {
|
|
321
|
+
if (process.stdout.isTTY) {
|
|
322
|
+
const statErrorMessage = statError instanceof Error ? statError.message : String(statError);
|
|
323
|
+
console.error(`Error accessing ${dirName} path ${resolvedDirPath}: ${statErrorMessage}`);
|
|
324
|
+
}
|
|
325
|
+
return null;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return resolvedDirPath;
|
|
329
|
+
};
|
|
330
|
+
let validatedLogsPath = ensureDirectory(env.LOGS_DIR, projectRoot, "logs");
|
|
331
|
+
if (!validatedLogsPath) {
|
|
332
|
+
if (process.stdout.isTTY) {
|
|
333
|
+
console.warn(`Warning: Custom logs directory ('${env.LOGS_DIR}') is invalid or outside the project boundary. Falling back to default.`);
|
|
334
|
+
}
|
|
335
|
+
const defaultLogsDir = path.join(projectRoot, "logs");
|
|
336
|
+
validatedLogsPath = ensureDirectory(defaultLogsDir, projectRoot, "logs");
|
|
337
|
+
if (!validatedLogsPath) {
|
|
338
|
+
if (process.stdout.isTTY) {
|
|
339
|
+
console.warn("Warning: Default logs directory could not be created. File logging will be disabled.");
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
export const config = {
|
|
344
|
+
pkg,
|
|
345
|
+
mcpServerName: env.MCP_SERVER_NAME || pkg.name,
|
|
346
|
+
mcpServerVersion: env.MCP_SERVER_VERSION || pkg.version,
|
|
347
|
+
logLevel: env.MCP_LOG_LEVEL,
|
|
348
|
+
logsPath: validatedLogsPath,
|
|
349
|
+
environment: env.NODE_ENV,
|
|
350
|
+
mcpTransportType: env.MCP_TRANSPORT_TYPE,
|
|
351
|
+
mcpSessionMode: env.MCP_SESSION_MODE,
|
|
352
|
+
mcpHttpPort: env.MCP_HTTP_PORT,
|
|
353
|
+
mcpHttpHost: env.MCP_HTTP_HOST,
|
|
354
|
+
mcpHttpEndpointPath: env.MCP_HTTP_ENDPOINT_PATH,
|
|
355
|
+
mcpHttpMaxPortRetries: env.MCP_HTTP_MAX_PORT_RETRIES,
|
|
356
|
+
mcpHttpPortRetryDelayMs: env.MCP_HTTP_PORT_RETRY_DELAY_MS,
|
|
357
|
+
mcpStatefulSessionStaleTimeoutMs: env.MCP_STATEFUL_SESSION_STALE_TIMEOUT_MS,
|
|
358
|
+
mcpAllowedOrigins: env.MCP_ALLOWED_ORIGINS?.split(",")
|
|
359
|
+
.map((origin) => origin.trim())
|
|
360
|
+
.filter(Boolean),
|
|
361
|
+
mcpAuthSecretKey: env.MCP_AUTH_SECRET_KEY,
|
|
362
|
+
mcpAuthMode: env.MCP_AUTH_MODE,
|
|
363
|
+
oauthIssuerUrl: env.OAUTH_ISSUER_URL,
|
|
364
|
+
oauthJwksUri: env.OAUTH_JWKS_URI,
|
|
365
|
+
oauthAudience: env.OAUTH_AUDIENCE,
|
|
366
|
+
devMcpClientId: env.DEV_MCP_CLIENT_ID,
|
|
367
|
+
devMcpScopes: env.DEV_MCP_SCOPES?.split(",").map((s) => s.trim()),
|
|
368
|
+
openrouterAppUrl: env.OPENROUTER_APP_URL || "http://localhost:3000",
|
|
369
|
+
openrouterAppName: env.OPENROUTER_APP_NAME || pkg.name || "ibmi-mcp-server",
|
|
370
|
+
openrouterApiKey: env.OPENROUTER_API_KEY,
|
|
371
|
+
llmDefaultModel: env.LLM_DEFAULT_MODEL,
|
|
372
|
+
llmDefaultTemperature: env.LLM_DEFAULT_TEMPERATURE,
|
|
373
|
+
llmDefaultTopP: env.LLM_DEFAULT_TOP_P,
|
|
374
|
+
llmDefaultMaxTokens: env.LLM_DEFAULT_MAX_TOKENS,
|
|
375
|
+
llmDefaultTopK: env.LLM_DEFAULT_TOP_K,
|
|
376
|
+
llmDefaultMinP: env.LLM_DEFAULT_MIN_P,
|
|
377
|
+
oauthProxy: env.OAUTH_PROXY_AUTHORIZATION_URL ||
|
|
378
|
+
env.OAUTH_PROXY_TOKEN_URL ||
|
|
379
|
+
env.OAUTH_PROXY_REVOCATION_URL ||
|
|
380
|
+
env.OAUTH_PROXY_ISSUER_URL ||
|
|
381
|
+
env.OAUTH_PROXY_SERVICE_DOCUMENTATION_URL ||
|
|
382
|
+
env.OAUTH_PROXY_DEFAULT_CLIENT_REDIRECT_URIS
|
|
383
|
+
? {
|
|
384
|
+
authorizationUrl: env.OAUTH_PROXY_AUTHORIZATION_URL,
|
|
385
|
+
tokenUrl: env.OAUTH_PROXY_TOKEN_URL,
|
|
386
|
+
revocationUrl: env.OAUTH_PROXY_REVOCATION_URL,
|
|
387
|
+
issuerUrl: env.OAUTH_PROXY_ISSUER_URL,
|
|
388
|
+
serviceDocumentationUrl: env.OAUTH_PROXY_SERVICE_DOCUMENTATION_URL,
|
|
389
|
+
defaultClientRedirectUris: env.OAUTH_PROXY_DEFAULT_CLIENT_REDIRECT_URIS?.split(",")
|
|
390
|
+
.map((uri) => uri.trim())
|
|
391
|
+
.filter(Boolean),
|
|
392
|
+
}
|
|
393
|
+
: undefined,
|
|
394
|
+
supabase: env.SUPABASE_URL && env.SUPABASE_ANON_KEY
|
|
395
|
+
? {
|
|
396
|
+
url: env.SUPABASE_URL,
|
|
397
|
+
anonKey: env.SUPABASE_ANON_KEY,
|
|
398
|
+
serviceRoleKey: env.SUPABASE_SERVICE_ROLE_KEY,
|
|
399
|
+
}
|
|
400
|
+
: undefined,
|
|
401
|
+
openTelemetry: {
|
|
402
|
+
enabled: env.OTEL_ENABLED,
|
|
403
|
+
serviceName: env.OTEL_SERVICE_NAME || env.MCP_SERVER_NAME || pkg.name,
|
|
404
|
+
serviceVersion: env.OTEL_SERVICE_VERSION || env.MCP_SERVER_VERSION || pkg.version,
|
|
405
|
+
tracesEndpoint: env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,
|
|
406
|
+
metricsEndpoint: env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT,
|
|
407
|
+
samplingRatio: env.OTEL_TRACES_SAMPLER_ARG,
|
|
408
|
+
logLevel: env.OTEL_LOG_LEVEL,
|
|
409
|
+
},
|
|
410
|
+
/** IBM i DB2 configuration. Undefined if no related env vars are set. */
|
|
411
|
+
db2i: env.DB2i_HOST && env.DB2i_USER && env.DB2i_PASS
|
|
412
|
+
? {
|
|
413
|
+
host: env.DB2i_HOST,
|
|
414
|
+
user: env.DB2i_USER,
|
|
415
|
+
password: env.DB2i_PASS,
|
|
416
|
+
ignoreUnauthorized: env.DB2i_IGNORE_UNAUTHORIZED,
|
|
417
|
+
}
|
|
418
|
+
: undefined,
|
|
419
|
+
/** Path to YAML tools configuration file. From `TOOLS_YAML_PATH`. */
|
|
420
|
+
toolsYamlPath: env.TOOLS_YAML_PATH,
|
|
421
|
+
/** YAML configuration merge options. From `YAML_MERGE_*` environment variables. */
|
|
422
|
+
yamlMergeOptions: {
|
|
423
|
+
mergeArrays: env.YAML_MERGE_ARRAYS,
|
|
424
|
+
allowDuplicateTools: env.YAML_ALLOW_DUPLICATE_TOOLS,
|
|
425
|
+
allowDuplicateSources: env.YAML_ALLOW_DUPLICATE_SOURCES,
|
|
426
|
+
validateMerged: env.YAML_VALIDATE_MERGED,
|
|
427
|
+
},
|
|
428
|
+
/** IBM i HTTP Authentication configuration. From `IBMI_AUTH_*` environment variables. */
|
|
429
|
+
ibmiHttpAuth: {
|
|
430
|
+
enabled: env.IBMI_HTTP_AUTH_ENABLED,
|
|
431
|
+
allowHttp: env.IBMI_AUTH_ALLOW_HTTP,
|
|
432
|
+
tokenExpirySeconds: env.IBMI_AUTH_TOKEN_EXPIRY_SECONDS,
|
|
433
|
+
cleanupIntervalSeconds: env.IBMI_AUTH_CLEANUP_INTERVAL_SECONDS,
|
|
434
|
+
maxConcurrentSessions: env.IBMI_AUTH_MAX_CONCURRENT_SESSIONS,
|
|
435
|
+
privateKeyPath: env.IBMI_AUTH_PRIVATE_KEY_PATH,
|
|
436
|
+
publicKeyPath: env.IBMI_AUTH_PUBLIC_KEY_PATH,
|
|
437
|
+
keyId: env.IBMI_AUTH_KEY_ID,
|
|
438
|
+
},
|
|
439
|
+
/** Enable automatic reloading of YAML tools when configuration files change. From `YAML_AUTO_RELOAD`. Default: true. */
|
|
440
|
+
yamlAutoReload: env.YAML_AUTO_RELOAD,
|
|
441
|
+
/** Selected toolsets for filtering tools. Set via CLI --toolsets option or SELECTED_TOOLSETS environment variable. */
|
|
442
|
+
selectedToolsets: env.SELECTED_TOOLSETS?.split(",")
|
|
443
|
+
.map((ts) => ts.trim())
|
|
444
|
+
.filter(Boolean),
|
|
445
|
+
};
|
|
446
|
+
if (config.ibmiHttpAuth.enabled) {
|
|
447
|
+
const missing = [];
|
|
448
|
+
if (!config.ibmiHttpAuth.privateKeyPath) {
|
|
449
|
+
missing.push("IBMI_AUTH_PRIVATE_KEY_PATH");
|
|
450
|
+
}
|
|
451
|
+
if (!config.ibmiHttpAuth.publicKeyPath) {
|
|
452
|
+
missing.push("IBMI_AUTH_PUBLIC_KEY_PATH");
|
|
453
|
+
}
|
|
454
|
+
if (!config.ibmiHttpAuth.keyId) {
|
|
455
|
+
missing.push("IBMI_AUTH_KEY_ID");
|
|
456
|
+
}
|
|
457
|
+
if (missing.length > 0) {
|
|
458
|
+
throw new Error(`IBM i HTTP auth is enabled but missing required key configuration: ${missing.join(", ")}`);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
export const logLevel = config.logLevel;
|
|
462
|
+
export const environment = config.environment;
|
|
463
|
+
//# sourceMappingURL=index.js.map
|